/*
 * Extjs GridPanel的列有多种类型，例如：文本列、数字列、日期列、选择框列、操作列等。我们可以通过xtype来指定不同的列类型。
 * 
 * 下面是列的常用配置项：
 * 
 * xtype：列类型 text：列头显示的文字 dataIndex：绑定的字段名 width：宽度 flex：自动适应的宽度
 * sortable：是否可排序，默认为是 hideable：是否可隐藏，默认为是
 * locked：锁定列，将列锁定在grid的开头，当grid出现滚动条的时候该属性比较有用。默认为否 lockable：是否可锁定，默认为否
 * format：格式化字符串，常用于日期、数字的格式化。日期：'Y-m-d'；日期时间：'Y-m-d
 * H:i:s'；数字：'0,000.00'（带有千位分隔符、保留两位小数）、'0.00'（保留两位小数），'0'（不保留小数）
 * renderer：自定义绘制方法，可以是Ext.util.Format中定义好的方法名称，也可以是自定义否function，该方法接收下面的参数：value、metadata、record、rowIndex、colIndex、store、view，并需要一个用来显示的返回值。
 * editor：编辑器，当使用编辑插件的时候才会起作用。
 * 
 */
 // userStore.on('beforeload', function (store, options) {
	// var new_params = { strkey: Ext.getCmp('txtSearch').getValue() };
	// Ext.apply(store.proxy.extraParams, new_params);
	// });
	// 图标

	var store123 = new Ext.data.SimpleStore({
			fields : ['id', 'text'],
			data : [['1', '军事'], ['2', '财经'], ['3', '社会'], ['4', '历史'],
					['5', '文化']]
		});
	var OneCombo = Ext.create('Ext.form.ComboBox', {
		store : store123,
		allowBlank : true,
		displayField : 'text',
		valueField : 'id',
		emptyText : ' ',
		editable : false
			// 不可编辑
		});
 Ext.define('user', {
				extend : 'Ext.data.Model',
				fields : [{
							name : 'articleID',
							type : 'int'
						}, {
							name : 'channelID',
							type : 'int'
						}, {
							name : 'typeid',
							type : 'int'
						}, {
							name : 'title',
							type : 'string'
						}, {
							name : 'summary',
							type : 'string'
						}, {
							name : 'addeddate',
							type : 'date'
						}, {
							name : 'user',
							type : 'string'
						}, {
							name : 'author',
							type : 'string' 
						}, {
							name : 'source',
							type : 'string'
						}, {
							name : 'publishDate',
							type : 'string'
						}]
			});
// 添加文章
function addarticle() {
	// alert('您点击了添加按钮!');

	var article = new Ext.Window({
		title : '弹出窗口',
		width : 700,
		height : 550,
		resizable : false,
		closable : true,
		draggable : true,
		resizable : false,
		closeAction : 'hide', // 点击右上角关闭按钮后会执行的操作;
		layout : 'fit',
		// modal : true,//打开遮盖层
		// plain : true, // 表示为渲染window body的背景为透明的背景
		bodyStyle : 'padding:5px;',

		items : [{
			html : "<iframe   src ='/article/addarticle.html' width=100% height=100%></iframe>"

		}],
		buttonAlign : 'center',
		buttons : [{
					text : '关闭',
					type : 'button',
					handler : function() {
						article.close();
						userStore.load();
					}
				}]
	});
	article.show();
};
// 导入文章
function imarticle() {
	// alert('您点击了添加按钮!');

	var imarticle = new Ext.Window({
		title : '导入文章',
		width : 500,
		height : 250,
		resizable : false,
		closable : true,
		draggable : true,
		resizable : false,
		closeAction : 'hide', // 点击右上角关闭按钮后会执行的操作;
		layout : 'fit',
		// modal : true,//打开遮盖层
		// plain : true, // 表示为渲染window body的背景为透明的背景
		bodyStyle : 'padding:5px;',

		items : [{
			html : "<iframe   src ='/article/importExcel.html' width=100% height=100%></iframe>"

		}],
		buttonAlign : 'center',
		buttons : [{
					text : '关闭',
					type : 'button',
					handler : function() {
						imarticle.close();
						userStore.load();
					}
				}]
	});
	imarticle.show();
};


// 导出excel
function exportExcel() {
	 var exportExcel = Ext.get('exportExcel');
	 //alert(exportExcel);
    //exportExcel.on('click', exportButtonClick);
    Ext.get('exportExcel').on('click', function(e){
    	//window.open('articles/excelarticle.do');
    	  
 Ext.MessageBox.confirm('提示','确定要导出用户吗?',function(btn){
    if(btn=="yes"){ 
    //Ext.Ajax.request({
     // url:"articles/excelarticle.do",
     // success:function(res){
       //    var obj =Ext.decode(res.responseText);
       //alert(res.responseText);
    	window.location.href ='/articles/excelarticle.do';
       //window.location.href =obj.path;
       //window.open('articles/excelarticle.do');
      }
      });
    //}
  });
  

    
    //function exportButtonClick (){
   //      window.location.href =  'articles/excelarticle.do';
//};
	

}
// 导入excel
function importExcel() {
	 var importExcel = Ext.get('importExcel');
	 //alert(exportExcel);
    //exportExcel.on('click', exportButtonClick);
    Ext.get('importExcel').on('click', function(e){
    	//window.open('articles/excelarticle.do');
    	  

    //}
  });
  

    
    //function exportButtonClick (){
   //      window.location.href =  'articles/excelarticle.do';
//};
	

}

getOneDisplay = function(value, meta, record) {

	var rowIndex = OneCombo.store.find("id", value);
	if (rowIndex < 0)
		return '';
	var record = OneCombo.store.getAt(rowIndex);
	// alert(record.get("text"));
	return record ? record.get('text') : '';
};
var userStore = Ext.create('Ext.data.Store', {
			model : 'user',
			pageSize : 10,// 每页显示数目
			proxy : {
				actionMethods : {
					read : 'post'
				},
				type : 'ajax',
				url : '/articles/articlelist.do',// 提供Json字符串的页面
				reader : {
					method : "post",
					type : 'json',
					root : 'data'
					// totalProperty:'total'//总项数
				}
			},
			autoLoad : true
		});
var artclepanel = Ext.create('Ext.grid.Panel', {
			title : '文章列表',
			renderTo : Ext.getBody(),
			store : userStore,// 此表格控件的数据由userStore数据中心提供支持
			// 宽度
			layout : 'fit',
			// height:500,
			selModel : {
				injectCheckbox : 0,
				mode : "SIMPLE", // "SINGLE"/"SIMPLE"/"MULTI"
				checkOnly : true
				// 只能通过checkbox选择
			},
			selType : "checkboxmodel",

			columns : [{
						xtype : "rownumberer",
						text : '序号',
						width : 40
					}, {
						text : '文章ID',
						dataIndex : 'articleID',
						width : 50,
						flex : 1,
						editor : {
							xtype : "numberfield",
							decimalPrecision : 0,
							selectOnFocus : true
						}
					}, {
						text : '文章分类',
						dataIndex : 'channelID',
						width : 50,
						flex : 1,
						renderer : getOneDisplay
					},  {
						text : '文章标题',
						dataIndex : 'title',
						flex : 1,
						editor : "textfield"
					}, {
						text : '用户名',
						dataIndex : 'summary',
						flex : 1,
						editor : "textfield"
					}, {
						text : '添加时间',
						dataIndex : 'addeddate',
						flex : 1
					}, {
						text : 'ID',
						dataIndex : 'user',
						flex : 1
					}, {
						text : '作者',
						dataIndex : 'author',
						flex : 1
					}, {
						text : '来源',
						dataIndex : 'source',
						flex : 1
					}, {
						text : '时间',
						dataIndex : 'publishDate',
						flex : 1
					}
			// {xtype:'datecolumn',text:'时间',dataIndex:'publishDate',flex:1}
			],

			tbar : [{
						xtype : 'button',
						text : '添加',
						width : 100,
						handler : addarticle
					},'-', {
						xtype : 'button',
						text : '删除',
						width : 100,
						handler : delarticle
					},'-', {
						xtype : 'button',
						text : '修改',
						width : 100,
						handler : detailarticle
					},'-', {
						xtype : 'button',
						text : '查看',
						width : 100
					},'-',
					{
                text:'重置',
                // icon:'../img/refresh.png',
                tooltip:'清空查询条件',
                handler:function () {
                	// top.getForm().reset();
                   
                    Ext.getCmp('source').reset(),
				    Ext.getCmp('author').reset(),
					Ext.getCmp('title').reset(),
					Ext.getCmp('startime').reset(),
					Ext.getCmp('endtime').reset(),
					Ext.getCmp('articleID').reset(),
					Ext.getCmp('channelID').reset()
						 
                    // store.reload({start:0, limit:20});

                }
            },
            '-',
            {
                text:'刷新',
                // icon:'../img/refresh.png',
                tooltip:'刷新纪录',
                handler:function () {
                    userStore.removeAll();
                    userStore.reload({start:0, limit:10});
                    // store.reload();
                }
            },
             '-',
            {
                text:'图表',
                // icon:'../img/chart.png',
                tooltip:'显示图表'
               
            },
            '-',
            {   xtype : 'button',
                id:'exportExcel',
            	text : "导出到excel",
                            style : {
                                marginRight : '20px'
                            },
                            handler :exportExcel 
                    
                           // Ext.Ajax.request({
                            	 //window.location.href = Ext.CONTEXT + 'articles/excelarticle.do',
									// url : 'articles/excelarticle.do',
									// params : {
									// title : title,
									// articleID : articleID
									// },
									//method : 'POST'
									
									

								//});	 
    
   
            },
            '-', {   xtype : 'button',
                id:' importExcel',
            	text : "导入到excel",
                            style : {
                                marginRight : '20px'
                            },
                            handler : imarticle 
                    
                           // Ext.Ajax.request({
                            	 //window.location.href = Ext.CONTEXT + 'articles/excelarticle.do',
									// url : 'articles/excelarticle.do',
									// params : {
									// title : title,
									// articleID : articleID
									// },
									//method : 'POST'
									
									

								//});	 
    
   
            },'-'
					],
					
			bbar : [{
				xtype : 'pagingtoolbar',// 底部工具栏是分页工具栏
				store : userStore,// 按照userStore的数据进行分页
				displayInfo : true
					// 显示共XX页，每页显示XX条的信息
				}],
			plugins : [Ext.create('Ext.grid.plugin.CellEditing', {
						clicksToEdit : 1
					})],
			listeners : {
				itemdblclick : function(me, record, item, index, e, eOpts) {
					// 双击事件的操作
				}
			}
		});

	
// 修改文章
function detailarticle() {
	this.count = artclepanel.getSelectionModel().getCount();
	// alert(this.count);
	if (this.count == 0) {
		Ext.Msg.alert('提示', '请选择文章！');
	}
	if (this.count > 1) {
		Ext.Msg.alert('提示', '一次只能查看一篇文章！');
	}
	if (this.count == 1) {
		var msg = 0;
		var title = '';
		// grid.getSelectionModel().getSelected();//获取选中的第一条记录,返回record类型
		// grid.getSelectionModel().getSelections();//获取选中的全部记录,返回一个数组,里面全是record类型
		// grid.store.remove(record);//参数是record类型的,移除该数据
		// grid.store.removeAt(rowIndex);//参数是行数,移除该行
		// grid.store.removeAll();//移除全部数据
		// 删除选中的第一条记录
		// grid.store.remove(grid.getSelectionModel().getSelected());
		// 删除选中的全部记录
		// var records = grid.getSelectionModel().getSelections();
		// for(var i = 0,len = records.length;i<len;i++ ){
		// grid.store.remove(records[i]);
		// }

		var record = artclepanel.getSelectionModel().getSelection();// 获取选中的全部记录,返回一个数组,里面全是record类型

		var articleID = "";
		var title = "";

		var temarticleID = record[0].get("articleID"); // 这里为Grid数据源的Id列
		var temtitle = record[0].get("title"); // 这里为Grid数据源的Id列

		var article = new Ext.Window({
			title : '弹出窗口',
			width : 700,
			height : 550,
			resizable : false,
			closable : true,
			draggable : true,
			resizable : false,
			closeAction : 'hide', // 点击右上角关闭按钮后会执行的操作;
			layout : 'fit',
			// modal : true,//打开遮盖层
			// plain : true, // 表示为渲染window body的背景为透明的背景
			bodyStyle : 'padding:5px;',

			items : [{

				html : '<iframe scrolling="auto" frameborder="0" width="100%" height="100%" src="/article/detailarticle.html?title='
						+ temtitle
						+ '&articleID='
						+ temarticleID
						+ '"></iframe>'

			}],
			buttonAlign : 'center',
			buttons : [{
						text : '关闭',
						type : 'button',
						handler : function() {
							article.close();
							// userStore.load();
						}
					}]
		});

		article.show();

	}

	// article.show();
};

// 删除文章
function delarticle() {
	this.count = artclepanel.getSelectionModel().getCount();
	if (this.count == 0) {
		Ext.Msg.alert('提示', '请选择要删除的文章！');
	} else {
		var msg = 0;
		var title = '';
		// grid.getSelectionModel().getSelected();//获取选中的第一条记录,返回record类型
		// grid.getSelectionModel().getSelections();//获取选中的全部记录,返回一个数组,里面全是record类型
		// grid.store.remove(record);//参数是record类型的,移除该数据
		// grid.store.removeAt(rowIndex);//参数是行数,移除该行
		// grid.store.removeAll();//移除全部数据
		// 删除选中的第一条记录
		// grid.store.remove(grid.getSelectionModel().getSelected());
		// 删除选中的全部记录
		// var records = grid.getSelectionModel().getSelections();
		// for(var i = 0,len = records.length;i<len;i++ ){
		// grid.store.remove(records[i]);
		// }

		Ext.MessageBox.confirm('确认删除', '你确认要删除文章吗？', function(btn) {
					var record = artclepanel.getSelectionModel().getSelection();// 获取选中的全部记录,返回一个数组,里面全是record类型
					if (btn == "yes") {
						var articleID = "";
						var title = "";

						for (var i = 0, len = record.length; i < len; i++) {

							var temarticleID = record[i].get("articleID"); // 这里为Grid数据源的Id列
							var temtitle = record[i].get("title"); // 这里为Grid数据源的Id列

							if (i == 0) {
								articleID = articleID + temarticleID;
								title = title + temtitle;
							} else {
								title = title + "," + temtitle;
								articleID = articleID + "," + temarticleID;
							}
						}
						Ext.Ajax.request({
									url : '/articles/delarticle.do',
									params : {
										title : title,
										articleID : articleID
									},
									method : 'POST',
									success : function(response, options) {
										var result = Ext
												.decode(response.responseText);
										if (result.success) {
											userStore.load();
											// artclepanel.store.remove(record);//参数是record类型的,移除该数据

											Ext.Msg.alert('提示', '删除文章信息成功!');

										} else {
											Ext.Msg.alert('提示', '删除文章信息失败!');
										}
									},
									failure : function(response, options) {

										Ext.Msg.alert('提示', '删除文章信息请求失败!');
									}

								});
					}
				});
	}
};
		
Ext.onReady(function() {
	//检索框
var top = Ext.create('Ext.form.Panel', {
		width : '100%',
		height : '100%',
		margin : 0,
		// title: "Form",
		// renderTo: Ext.getBody(),
		collapsible : true, // 可折叠
		autoScroll : true, // 自动创建滚动条
		defaultType : 'textfield',
		defaults : {
			anchor : '100%'
		},
		fieldDefaults : {
			labelWidth : 80,
			labelAlign : "left",

			id : 'dbtype',
			margin : 5
		},
		items : [{
					xtype : "container",
					layout : "hbox",
					items : [{
								xtype : "textfield",
								name : 'author',
								id : 'author',
								fieldLabel : "作者",
								allowBlank : true,
								width : 150
							}, {
								xtype : "textfield",
								name : "source",
								id : 'source',
								fieldLabel : "来源",
								allowBlank : true
							}, {
								xtype : "textfield",
								name : "title",
								id : 'title',
								fieldLabel : "文章标题",
								allowBlank : true
							}]
				}, {
					xtype : "container",
					layout : "hbox",
					items : [{
								xtype : "numberfield",
								name : "articleID",
								id : 'articleID',
								fieldLabel : "文章ID号",
								allowBlank : true,
								width : 150
							}, {
								xtype : "combo",
								hiddenName : "channelID",
								id : 'channelID',
								store : store123,
								fieldLabel : "文章分类",
								displayField : "text",
								valueField : "id",
								allowBlank : true
							}, {
								xtype : "datefield",
								name : "startime",
								id : 'startime',
								fieldLabel : "开始时间",
								format : 'Y-m-d',
								maxValue : new Date(),
								allowBlank : true
							}, {
								xtype : "datefield",
								name : "endtime",
								id : 'endtime',
								fieldLabel : "结束时间",
								format : 'Y-m-d',
								maxValue : new Date(),
								allowBlank : true
							}]
				}

		],

		buttons : [{
			text : '搜索',
			handler : function() {
				
				// alert(typeid33);
				userStore.on('beforeload', function(userStore, options) {
					var new_params = {
						author : encodeURI(Ext.getCmp('author').getValue()),
						title : encodeURI(Ext.getCmp('title').getValue())
					};
					Ext.apply(userStore.proxy.extraParams, new_params);
						// alert('beforeload');
					});
				userStore.load({
					params : {
						start : 0,
						limit : 10,
						source : Ext.getCmp('source').getValue(),
						author : Ext.getCmp('author').getValue(),
						title : Ext.getCmp('title').getValue(),
						startime : dateFormat(Ext.getCmp('startime').getValue()),
						endtime : dateFormat(Ext.getCmp('endtime').getValue()),
						articleID : Ext.getCmp('articleID').getValue(),
						channelid : Ext.getCmp('channelID').getValue()
					}
				});
			}
		}]
	});
	var ReviewForm = Ext.create('Ext.panel.Panel', {
				frame : true,

				bodyStyle : 'padding:5px 5px 0',
				width : "1095",
				fieldDefaults : {
					labelAlign : 'top',
					msgTarget : 'side'
				},
				items : [top, artclepanel],
				renderTo : Ext.getBody()
			});

	// onready结束


	// 将时间转化为 2011-08-20 00:00:00 格式
	// 解决Ext4的formPanel通过grid的store查询问题 2012.2.22 jzr
	function dateFormat(value) {
		if (null != value) {
			// return Ext.Date.format(new Date(value),'Y-m-d H:i:s');
			return Ext.Date.format(new Date(value), 'Y-m-d');
		} else {
			return null;
		}
	};

});